# -*- coding: utf-8 -*-
# @File  : app02.py
# @Author:  liubinyu
# @Time: 2024/5/19 12:36
from typing import Union, Optional

from fastapi import APIRouter

app02 = APIRouter()


@app02.get("/jobs/{kd}")
async def search_jobs(kd: str, city: Union[str, None] = None, xl: Optional[str] = None):  # 有默认值即可选，否则必选
    if city or xl:
        return {"kd": kd, "city": city, "xl": xl}
    return {"kd": kd}

fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]

@app02.get("/items/")
async def read_item(skip: int=0, limit: int=10):
    return fake_items_db[skip: skip + limit]

'''
查询字符串是键值对的集合，这些键值对位于 URL 的 ？ 之后，并以 & 符号分隔。
例如，在以下 url 中：
http://127.0.0.1:8000/items/?skip=0&limit=10
'''
# 多个路径和查询参数
# 你可以同时声明多个路径参数和查询参数，FastAPI 能够识别它们。
# 而且你不需要以任何特定的顺序来声明。它们将通过名称被检测到：
@app02.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
    user_id: int, item_id: str, q: Optional[str] = None, short: bool = False
):
    item = {"item_id": item_id, "owner_id": user_id}
    if q:
        item.update({"q": q})
    if not short:
        item.update(
            {"description": "This is an amazing item that has a long description"}
        )
    return item